From 02ae938c238c9d18448d17a8ec92c0edd8c17463 Mon Sep 17 00:00:00 2001 From: Bertrand Yuan Date: Tue, 16 Dec 2025 00:12:49 +0800 Subject: feat(back-end): introduce payload Payload is the next.js Headless CMS and App Framework, I would like to pick it up and modify it as it is MIT licensed. Many features in Payload is not applicable for our project. So, I modify it so that it is light and clear. --- src/app/(main)/og/[...slug]/og.tsx | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/app/(main)/og/[...slug]/og.tsx (limited to 'src/app/(main)/og/[...slug]/og.tsx') diff --git a/src/app/(main)/og/[...slug]/og.tsx b/src/app/(main)/og/[...slug]/og.tsx new file mode 100644 index 0000000..5754e96 --- /dev/null +++ b/src/app/(main)/og/[...slug]/og.tsx @@ -0,0 +1,65 @@ +import type { ImageResponseOptions } from 'next/dist/compiled/@vercel/og/types'; +import { ImageResponse } from 'next/og'; +import type { ReactElement } from 'react'; + +interface GenerateProps { + title: string; + description?: string; +} + +export function generateOGImage( + options: GenerateProps & ImageResponseOptions, +): ImageResponse { + const { title, description, ...rest } = options; + + return new ImageResponse( + generate({ + title, + description, + }), + { + width: 1200, + height: 630, + ...rest, + }, + ); +} + +export function generate({ + title, + description = 'Learn more about this post by visiting the website.', +}: GenerateProps): ReactElement { + return ( +
+
+
+
+
+
+
20 ? 64 : 80, + letterSpacing: '-0.04em', + }} + > + {title} +
+
+ {description} +
+
+
+ ); +} -- cgit v1.2.3